const { ipcMain } = require("electron");
const robot = require("robotjs");
const vkey = require("vkey");

// 处理鼠标事件
function handleMouse(data) {
  let { clientX, clientY, screen, video } = data;
  let x = (clientX * screen.width) / video.width;
  let y = (clientY * screen.height) / video.height;
  robot.moveMouse(x, y);
  robot.mouseClick();
}

// 处理键盘事件
function handleKey(data) {
  const modifiers = [];
  // 这里仅做了部分特殊按键的处理
  if (data.meta) modifiers.push("meta");
  if (data.shift) modifiers.push("shift");
  if (data.alt) modifiers.push("alt");
  if (data.ctrl) modifiers.push("ctrl");

  let key = vkey[data.keyCode].toLowerCase();

  // 过滤特殊按键，如：shift 转化后是 <shift>, key[0] 就是 <
  if (key[0] !== "<") {
    robot.keyTap(key, modifiers);
  }
}

module.exports = function () {
  // 主进程监听 robot 事件，根据类型做不同事件的处理
  ipcMain.on("robot", (e, type, data) => {
    if (type === "mouse") {
      handleMouse(data);
    } else if (type === "key") {
      handleKey(data);
    }
  });
};
